package _08_Super;
/**
 * super : 保存了父类的特征关系,可以理解为是父类的对象的引用(错的)
 * 
 * 1.用在子类成员方法,可以区分子类和父类同名的成员变量/成员方法
 * 2.用在子类的构造方法,同上
 * 3.用在子类的构造方法,用于调用父类构造方法
 * super(参数);
 * 必须在子类构造方法的第一行
 * 如果子类构造方法中没有出现 this (xxx) 和 super(xxx) 的话,会有一个
 * 默认的 super() 去调用父类的无参构造方法
 * 
 * this(xxx) 这种写法必须出现在构造方法的第一行,所以 this(xxx) 和 super(xxx)
 * 不能同时出现
 * 
 * this 和 super 都不能出现在静态上下文中
 * @author lenovo
 * @Date 2020年7月9日
 * @Time 下午6:11:49
 */
public class Super_01 extends A {
	Super_01() {
		// 不写,默认会有 super() 调用父类无参构造
		super();
		System.out.println("子类构造方法!");
	}

	int i = 2;

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Super_01 s = new Super_01();
		s.m1();
	}

	public void m1() {
		// 子类
		System.out.println(i);
		// 父类
		System.out.println(super.i);
		// 父类
		System.out.println(this.i);
	}
}

class A {
	A() {
		super();
		System.out.println("父类构造方法!");
	}

	int i = 10;
}